package cn.com.surker.production.service;

import cn.com.surker.production.entity.InvoiceHandle;
import cn.com.surker.production.entity.vo.InvoiceHandleDetail;
import cn.com.surker.production.entity.vo.InvoiceScrapReport;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 生产退转料处理表 服务类
 * </p>
 *
 * @author admin
 * @since 2024-09-26
 */
public interface InvoiceHandleService extends IService<InvoiceHandle> {

	/**
	 * 根据源发货单查询操作记录
	 *
	 * @param orgId     站点id
	 * @param invoiceId 发货单
	 * @return
	 */
	List<InvoiceHandle> findBySouInvId(Long orgId, Long invoiceId);

	/**
	 * 查询发货单的转入记录
	 *
	 * @param orgId
	 * @param invoiceId
	 * @return
	 */
	List<InvoiceHandle> findByTarInvId(Long orgId, Long invoiceId);

	/**
	 * 一般为查询退货单下面的操作记录
	 *
	 * @param pid
	 * @return
	 */
	List<InvoiceHandleDetail> findByPId(Long pid);

	/**
	 * 查询发货单的操作记录,包括生产,转出,转入,过磅,作废
	 *
	 *
	 * @param erpDb
	 * @param sourceOrgId
	 * @param sourceInvId
	 * @return
	 */
	List<InvoiceHandleDetail> handleList(String erpDb, Long sourceOrgId, Long sourceInvId);

	/**
	 * 查询显示全部信息的退砼单,默认是查询流出站点的
	 *
	 * @param startDate
	 * @param endDate
	 * @param conName
	 * @param site
	 * @param invoiceId            发货单id
	 * @param pageIndex
	 * @param limit
	 * @return
	 */
	IPage<InvoiceHandleDetail> findInvBackPage(String erpDb, String startDate, String endDate, String conName, String site, Long invoiceId, Long carId,
											   Integer isAuto, Integer handle, Integer pageIndex, Integer limit);

	/**
	 * 查询作废方量分页
	 * @param dsCode
	 * @param startTime
	 * @param endTime
	 * @param pageIndex
	 * @param limit
	 * @return
	 */
	IPage<InvoiceScrapReport> findScrapPage(Long orgId, String dsCode, String startTime, String endTime, Integer pageIndex, Integer limit);

	/**
	 * 查询作废方量列表
	 *
	 * @param dsCode
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	List<InvoiceScrapReport> findScrapList(Long orgId, String dsCode, String startTime, String endTime);

	/**
	 * 查询全部的操作记录
	 *
	 * @param erpDb
	 * @param startTime
	 * @param endTime
	 * @param searchVal
	 * @param pageIndex
	 * @param limit
	 * @return
	 */
	IPage<InvoiceHandleDetail> findPage(String erpDb, Integer operateType, String startTime, String endTime, String searchVal, Integer pageIndex, Integer limit);
}
